"""
    书籍搜搜的视图函数
"""
from flask import jsonify, request
from app.forms.book import SearchForm

from app.libs.helper import is_isbn_or_key # 导入方法库
from app.spider.yushu_book import YuShuBook # 导入鱼书类
from . import web


# flask路由注册方式（使用装饰器注册）
# 在路径后面加/可以同时兼容 /hello 和 /hello/ ，把不带 / 的链接重定向到带 / 的链接
@web.route('/book/search')
def search():
    """
        q：区分 关键字搜索 和 isbn搜索
        page: 分页信息
        请求示例：url?q=金庸&page=1
    """
    # 验证层
    form = SearchForm(request.args)
    # 如果参数验证成功
    if form.validate() :

        q = form.q.data.strip()
        page = form.page.data
        isbn_or_key = is_isbn_or_key(q)

        if isbn_or_key == 'isbn':
            result = YuShuBook.search_by_isbn(q)
        else:
            result = YuShuBook.search_by_keyword(q, page)

        # dict 序列化 使用flask自带的方法，将数据用json格式返回
        return jsonify(result)
    else:
        return jsonify(form.errors)
